import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * En esta clase se crean las opciones para la validación de los movimientos.
 * 
 * @author Ulises Yamil Castorena Caldera 
 * @version 1.0
 */
public class Perro extends Enemigo
{        
    /**
     * Contructor de la clase Perro, se igualan los valores y se crea el objeto para mostrar la imagen.
     * @param valor Dependiendo del valor que tenga va a ser la ubicación del objeto.
     */
    public Perro(boolean valor)    
    {
       ubic = valor;             
       img = new GreenfootImage("perro1.png");
       img.scale(80,50);
       if(!ubic)
       {           
           img.mirrorHorizontally();
           setImage(img);
       }
       else if(ubic)
       {
           img.mirrorHorizontally();
           img.mirrorVertically();
           setImage(img);           
       }
    }
    
    /**
     * Método Act de la clase Perro, en el se muestra la imagen, se mueve y se valida la opcion para remover la imagen.
     */
    public void act() 
    {
        setImage(img);
        super.mueve();         
        intersecta();
    }
    
    /**
     * Método que valida si un objeto de esta clase se topa con otro objeto o si el objeto llegó al final de la pantalla.
     */
    public void intersecta()
    {
        Actor otro;
        otro = getOneIntersectingObject(Personaje.class);
        if(this.getX() == 0)
        {
           ((Mundo)getWorld()).enviaPerro();   
           getWorld().removeObject(this);
        }        
        if(otro != null)                   
            realiza();        
    }
    
     /**
     * Este método esta redefinido en la clase para para su implementacion segun sea el caso.
     */
    public void realiza()
    {
        ((Mundo)getWorld()).pierdeVida();
    }
}
